function myAjax(option) {
  // 结构传入的配置对象
  // 如果调用函数的人不传method则,默认使用get请求
  let { url, method = 'get', data, success, fail } = option

  //判断如果不传url,则不需要发送请求
  if (!url) return

  // 创建xhr实例
  const xhr = new XMLHttpRequest()

  // 如果是get请求,则需要在调用open函数之前先把data的数据拼接成 `键=值&键=值`的形式
  //判断是否传入了data
  let str = null
  if (data) {
    // 如果传入了data,则将对象转成键=值的字符串
    let arr = []
    for (key in data) {
      arr.push(key + '=' + data[key])
    }
    str = arr.join('&')
  }

  // 判断,如果是get请求,才将创建好的字符串拼接在url后面
  if (method === 'get' && data) {
    url += '?' + str
    str = null
  }
  // 调用open方法
  xhr.open(method, url)

  // 只有post请求,需要设置请求头
  if (method === 'post') {
    xhr.setRequestHeader('content-type', 'application/x-www-form-urlencoded')
  }

  // 设置请求主体并发送请求
  xhr.send(str)

  // 接收响应

  xhr.onreadystatechange = function () {
    if (xhr.readyState === 4) {
      if (xhr.status === 200) {
        // 成功
        success && success(xhr.responseText)
      } else {
        // 失败
        // if (fail) {
        //   fail()
        // }
        fail && fail()
      }
    }
  }
}
